/* The is the Rover Team Project Code for The California Institute of Technology 2012.
Copyright (C) 2012 scchang, bryanhe, dflicker

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. */
#ifndef UTIL_
#define UTIL_

#include "include/util.h"

int check_correct_delinate(unsigned char* input, int length){

  // Check endpoints
  if(input[0] != STRING_STAR_POINT || input[length - 1] != STRING_END_POINT){
    fprintf(stderr, "In check_correct_delinate, incorrect endpoints.\n");
    return -1;
  }
  
  // Check Delinator
  for(int i = 2; i < length - 1; i += 2){
    if(input[i] != STRING_DELINATOR){
      fprintf(stderr, "In check_correct_delinate, incorrect delinates.\n");
      return -1;
    }
  }

  // Else Good Delination
  return 0;

}


void print_int_values(unsigned char* input, int size){
  int component = 0;
  for(int i = 1; i < size - 1; i += 2, component++){
    printf("Index: %d | Value: %d\n", component, (int)input[i]);
  }
}

void print_name_values(unsigned char* input, int size, const char* names[]){
  int component = 0;
  for(int i = 1; i < size - 1; i +=2, component++){
    printf("Index: %d | Name: %s | Value: %d\n", component, names[component], (int)input[i]);
  }
}

int constrain(int input, int min, int max){
  if(input < min){
    return min;
  }else if(input > max){
    return max;
  }
  return input;
}

#endif
